/***************************************************************************
创建者：         hualei
开始时间：     2018.11.4
copyright: (C) 深圳市华友高科有限公司
修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   FTP文件管理模块视图界面部分
 *                                                                         *
 ***************************************************************************/
#ifndef FILEMANAGE_H
#define FILEMANAGE_H

#include <QWidget>
#include <QObject>
#include "filemanage_global.h"
#include <QListWidgetItem>
#include <QTableWidgetItem>

#define FILEMANAGE_MUSIC_PATH    "/agvwork/AgvFundation/fundation/data/robotData1/music/"
#define FILEMANAGE_PROGRAM_PATH  "/agvwork/AgvFundation/fundation/data/robotData1/program/"
#define FILEMANAGE_MAP_PATH      "/agvwork/AgvFundation/fundation/data/robotData1/map/"
#define FILEMANAGE_GLOBALCONFIG_PATH      "/agvwork/AgvFundation/fundation/data/globalConfig/"
#define FILEMANAGE_BIN_PATH      "/agvwork/AgvFundation/fundation/bin/"
#define FILEMANAGE_AGVWORK_PATH      "/agvwork/"


namespace Ui {
class FileManage;
}

/**
 * @brief The FileManage class          FTP文件管理模块视图界面类
 */
class FILEMANAGESHARED_EXPORT FileManage : public QWidget
{
    Q_OBJECT

public:

    explicit FileManage(int styleId,QWidget *parent = 0);

    ~FileManage();

    void updateLocalDir_in();
    /**
     * @brief initView              初始化界面
     */
    void initView();



    /**
     * @brief updateView_Server     更新远程文件信息
     */
    void updateView_Server(QStringList &fileList);



    /**
     * @brief getLocalFileSelectList    获取本地文件的选择列表
     * @return                          文件名列表
     */
    QList <QString> &getLocalFileSelectList();

    /**
     * @brief getServerFileSelection    获取远程文件的选择列表
     * @return                          文件列表
     */
    QList <QString> &getServerFileSelectList();
    void initialDisplayStyle(int styleId);
private slots:

    /**
     * @brief on_Local_All_CheckBox_clicked     本地文件全选按钮点击响应槽函数
     * @param checked                           勾选状态
     */
    void on_Local_All_CheckBox_clicked(bool checked);

    /**
     * @brief on_DownloadFile_Btn_clicked       从服务器下载文件至本地响应槽函数
     */
    void on_DownloadFile_Btn_clicked();

    /**
     * @brief on_UploadFile_Btn_clicked         从本地上传文件至服务器响应槽函数
     */
    void on_UploadFile_Btn_clicked();

    /**
     * @brief on_DeleteFile_Btn_clicked         删除文件按钮响应槽函数
     */
    void on_DeleteFile_Btn_clicked();

//    /**
//     * @brief on_getFileList_Btn_clicked        获取文件列表按钮响应槽函数
//     */
//    void on_getFileList_Btn_clicked();

    /**
     * @brief on_Server_All_CheckBox_clicked        服务器文件全选按钮响应槽函数
     * @param checked                               勾选状态
     */
    void on_Server_All_CheckBox_clicked(bool checked);

    /**
     * @brief server_SelectSingleLine_Slot          远程文件选择单行,再次选择后取消
     */
    void server_SelectSingleLine_Slot();

    /**
     * @brief on_FileDir_ComBox_currentIndexChanged         切换目录时自动刷新文件列表
     * @param arg1
     */
    void on_FileDir_ComBox_currentIndexChanged(int index);

    void on_localDir_ComBox_currentIndexChanged(int index);



    void on_DeleteLocalFile_Btn_clicked();

    void on_back_Btn_clicked();

public slots:

    /**
     * @brief showFileManageDialog_Slot             显示文件管理模块界面
     */
    void showFileManageDialog_Slot();

signals:

    /**
     * @brief getFileList_Signal         获取文件列表信号
     * @param fileType                   文件类型
     */
    void getFileList_Signal(QString dirPath);
    void setLocalFileDir_signal(QString dirPath);


    /**
     * @brief downloadFile      下载文件信号
     */
    void downloadFile_Signal();

    /**
     * @brief uploadFile        上传文件信号
     */
    void uploadFile_Signal();

    /**
     * @brief removeFile_Signal   删除文件(分为删除本地/远程文件)
     */
    void removeLocalFile_Signal();
    void removeRemoteFile_Signal();

private:
    void updateLocalDir(QString dirPath);
    /**
     * @brief updateView_Local      更新本地文件信息
     */
    void updateView_Local(QList <QString> &fileList);
private:

    /**
     * @brief localFileList         本地文件选择列表
     */
    QList <QString> localFileSelectList;

    /**
     * @brief serverFileList        服务器文件选择列表
     */
    QList <QString> serverFileSelectList;

private:

    Ui::FileManage *ui;

    /**
     * @brief currentFileType       当前文件操作类型
     */
//    EM_CURRENT_FILE_TYPE currentFileType;

    /**
     * @brief selectItemList        用户选择文件对象
     */
    QList <QTableWidgetItem*> selectItemList;

    QString remoteFilePath;
    QString localFilePath;

};

#endif // FILEMANAGE_H
